/**
 * @file
 * @author dousha
 * @date 2020
 */

#include "kernel.h"
#include "memory/memory.h"
#include "peripheral/clock.h"
#include "peripheral/peripheral.h"
#include "messaging/messaging.h"
#include "interrupt/interrupt.h"
#include "task/task.h"
#include "task/schedule.h"

/**
 * 内核初始化函数。
 *
 * 以下函数调用顺序有严格要求，理解后方可改动。
 *
 * @kernelOnly
 */
void kernel_init() {
	interrupt_init();
	clock_init();
	memory_init();
	peripheral_init();
	message_init();
	task_init();
}

/**
 * 内核主循环。
 *
 * 该函数永不退出。
 *
 * @kernelOnly
 */
void kernel_loop() {
	for (;;) {
		// TODO
	}
}

bool kernel_is_in_svc() {
	// TODO
	return false;
}
